
package com.jf.cloud.supplier.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.common.response.ServerResponseEntity;
import com.jf.cloud.supplier.dto.SupplierUserDTO;
import com.jf.cloud.supplier.dto.SupplierUserRegisterDTO;
import com.jf.cloud.supplier.model.SupplierUser;
import com.jf.cloud.supplier.vo.SupplierUserVO;

import java.util.List;

/**
 * 供应商用户
 *
 * @author zz
 * @date 2022-03-14 17:04:32
 */
public interface SupplierUserService {

    /**
     * 分页获取店铺用户列表
     *
     * @param pageDTO         分页参数
     * @param supplierUserDTO 搜索参数
     * @return 店铺用户列表
     */
    PageVO<SupplierUserVO> pageBySupplierId(PageDTO pageDTO, SupplierUserDTO supplierUserDTO);

    /**
     * 根据用户id获取商家用户信息
     *
     * @param userId 用户id
     * @return 商家用户信息
     */
    SupplierUserVO getByUserId(Long userId);

    /**
     * 根据用户id获取商家用户信息
     *
     * @param userId 用户id
     * @return 商家用户信息
     */
    SupplierUserVO getSimpleByUserId(Long userId);

    /**
     * 保存店铺用户信息
     *
     * @param supplierUser 店铺用户id
     * @param roleIds      角色id列表
     */
    void save(SupplierUser supplierUser, List<Long> roleIds);

    /**
     * 更新店铺用户信息
     *
     * @param supplierUser 店铺用户id
     * @param roleIds      角色id列表
     */
    void update(SupplierUser supplierUser, List<Long> roleIds);

    /**
     * 根据店铺用户id删除店铺用户信息
     *
     * @param supplierUserId 店铺用户id
     */
    void deleteById(Long supplierUserId);

    /**
     * 获取店主账号的用户id-第一个创建的账号（仅用于审核店铺）
     *
     * @param supplierId
     * @return
     */
    Long getUserIdBySupplierId(Long supplierId);

    /**
     * 商家注册
     *
     * @param supplierUserRegisterDTO
     */
    void register(SupplierUserRegisterDTO supplierUserRegisterDTO);

    /**
     * 验证店铺的职工手机号/邮箱/用户名是否存在
     *
     * @param supplierUserDTO 店铺职工信息参数
     * @return Boolean true验证通过,该账号不存在 false验证不通过，该账号存在
     */
    ServerResponseEntity<Boolean> verifySupplierUserAccount(SupplierUserDTO supplierUserDTO);

    /**
     * 新增店铺职工信息，以及账号
     *
     * @param supplierUserDTO 店铺职工参数
     */
    void saveAccount(SupplierUserDTO supplierUserDTO);

    /**
     * 修改店铺职工信息，以及账号
     *
     * @param supplierUserDTO 店铺职工参数
     */
    void updateAccount(SupplierUserDTO supplierUserDTO);

    /**
     * 根据用户手机号查询用户数量
     *
     * @param mobile 手机号码
     * @return 用户数量
     */
    Integer countAccoutByMobile(String mobile);
}
